iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
Modern Web

React應用記錄誌系列 第 10

Day 10 Redux介紹

  • 分享至 

  • xImage
  •  

前言:Redux Toolkit 是目前編寫Redux 代碼的官方推薦,個人覺得如果是學習Redux新手的話,先了解Redux工作原理,對於學習Redux-toolkit相對上比較容易上手,所以今天先介紹Redux。

Redux是一個全局狀態管理工具,CDS(Common Data Service 數據庫管理系統),將應用程序中組件之間的狀態數據保存在一個全局位置(store)進行管理存儲,並將其提供給應用程序中的任何組件,而無需透過 props 傳遞到多個層別。

Redux基本術語:

1. Store =>保存應用程序所有的數據或狀態。

2. Action =>是Reducer函數中的參數,action.type描述要做什麼動作,例如要建立一個計數器App,其中就有增量/減量動作。

3. Reducer => reducer是管理Redux中狀態的函數,它管理狀態並返回更新的狀態,根據Store.dispatch 調度派發經由switch條件判斷而執行動作,然後依據該動作內Payload的值更新store中的狀態。

reducer()函數需要二個參數,state和 action,在reducer中可處理多個動作,由switch條件判斷,依動作類型action.type跟每個 case 條件比對,符合case 條件,執行case的內容並返回一個新的狀態值給store。例如dispatch 的action .type是increment,則執行case “INCREMENT”的內容返回一個狀態值。

4. dispatch ()=>Dispatch()需要二個值,一個type,是action.type定義要調度動作的action屬性,它是reducer switch判斷式中條件比對執行哪個動作的依據。第二個值是payload,每次狀態更新的值。

Redux工作原理:

1. npm install redux react-redux

2. 在index.js中

        import {createStore} from ‘redux’;
        import {Provider} from ‘react-redux’;        
       < Provider store={store}>
         < App />
      < /Provider>

Provider是一個組件,它將App.js應程程式組件包圍和包裝,然後將store作為屬性傳遞給Provider組件,將store依次提供給應用程式。

3.

const store = createStore(reducer,1)

createStore()方法有二個參數,第一個是reducer,返回一個新的狀態值給store,第二個是狀態值。

4.

const reducer = (state=0,action ) =>{
     switch(action.type) {
case “INCREMENT”:
return state = state+action.payload
case “DECREMENT”:
return state = state-action.payload
}

5.Store.dispatch,用dispatch方法在store執行調度動作

Store.dispatch({
 Type:” increment”,
Payload:10
})
Store.dispatch({
 Type:”decrement”,
Payload:10
})

6.Store.subscribe(() =>console.log(store.getState()));每當store狀態更新時會執行回調函數,在控制台顯示獲取更新狀態的記錄


上一篇
Day09 實作練習React Router
下一篇
Day 11 實作練習 Redux
系列文
React應用記錄誌31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言